package com.wulis.provider.authority.service;

import java.util.List;
import java.util.Set;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.wulis.common.support.BaseService;
import com.wulis.provider.authority.model.bo.RoleBo;
import com.wulis.provider.authority.model.dto.InsertRoleDto;
import com.wulis.provider.authority.model.dto.QueryRolePageDto;
import com.wulis.provider.authority.model.dto.UpdateRoleDto;
import com.wulis.provider.authority.model.entity.Role;
import com.wulis.provider.authority.model.vo.QueryRoleListVo;
import com.wulis.provider.authority.model.vo.QueryRolePageVo;
import com.wulis.provider.authority.model.vo.QueryRoleVo;

import lombok.NonNull;

/**
 * 权限管理:角色表 Service
 *
 * @author WuliBao
 * @date 2020-04-17
 */
public interface RoleService extends BaseService<Role> {
    
    /**
     * WEB:查询角色列表(分页)
     * 
     * @param queryRolePageDto queryRolePageDto
     * @return IPage
     */
    IPage<QueryRolePageVo> queryRolePage(@NonNull QueryRolePageDto queryRolePageDto);
    
    /**
     * WEB:查询角色列表(全量)
     *
     * @return role list
     */
    List<QueryRoleListVo> queryRoleList(Integer enable);
    
    /**
     * WEB:查询角色及权限信息
     *
     * @param roleId roleId
     * @return QueryRoleVo
     */
    QueryRoleVo queryRole(@NonNull Long roleId);
    
    /**
     * WEB:新增角色
     * 
     * @param insertRoleDto insertRoleDto
     * @return InsertRoleVo
     */
    Integer insertRole(@NonNull InsertRoleDto insertRoleDto);
    
    /**
     * WEB:修改角色
     * 
     * @param updateRoleDto updateRoleDto
     * @return Integer
     */
    Integer updateRole(@NonNull UpdateRoleDto updateRoleDto);
    
    /**
     * WEB:删除角色
     * 
     * @param roleId roleId
     * @return Integer
     */
    Integer deleteRole(@NonNull Long roleId);
    
    /**
     * WEB:查询全部角色及对应的按钮权限集合
     * 
     * @return Set<RoleBo>
     */
    Set<RoleBo> queryAllRoleButton();
    
}
